#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//
//
//typedef int SLDataType;  //通常对类型重定义
//#define N 10  //通常定义常量、宏函数

////静态顺序表不灵活,空间开多了浪费，开少了不够用
//struct SeqList
//{
//	int a[N];
//	int size;
//};

typedef int SLDataType;
#define INIT_CAPACITY 4

// 动态顺序表 -- 按需申请
typedef struct SeqList
{
	SLDataType* a;
	int size;     // 有效数据个数
	//扩容
	int capacity; // 空间容量
}SL;

// 增删查改
void SLInit(SL* ps);
void SLDestroy(SL* ps);
void SLPrint(SL* ps);
void SLCheckCapacity(SL* ps);//头插扩容

// 插入删除(尾插尾删，），，，STL命名习惯方便记忆
void SLPushBack(SL* ps, SLDataType x);
void SLPopBack(SL* ps);

//头插头删，从开始连续存储，size个，不易表示
//必须连续存储，size=4时，下标0-4，共五个
void SLPushFront(SL* ps, SLDataType x);
void SLPopFront(SL* ps);


//可以替代头插头删，尾插尾删,  复用即可
void SLInsert(SL* ps,int pos,SLDataType x);
void SLErase(SL* ps, int pos);

//暴力查找，返回下标位置
int SLFind(SL* ps, SLDataType x);